#ifndef RWLock_h
#define RWLock_h

#include "Semaphore.h"
#include "Mutex.h"
#include "Lightswitch.h"
#include <iostream>

class RWLock {

public:
	RWLock();
	~RWLock();
	void rlock();
	void wlock();
	void runlock();
	void wunlock();

private:
	Lightswitch* llave_de_luz_de_lectura;

	Semaphore* sala_de_lectura_vacia; // En ambos casos se podría utiliza un Mutex*
	Semaphore* molinete;			  // directamente...
									  // ...pero usamos semáforos inicializados en 1.
};

#endif
